#include <iostream>

// 函数模板

// 两个整形交换的函数
void swapInt(int &a, int &b)
{
    int temp = a;
    a = b;
    b = temp;
}


// 两个浮点交换的函数
void swapDouble(double &a, double &b)
{
    double temp = a;
    a = b;
    b = temp;
}


// 函数模板
template<typename T>
void mySwap(T &a, T &b)
{
    T temp = a;
    a = b;
    b = temp;
}

void test01()
{
    int a = 10;
    int b = 20;

    // 利用函数模板进行交换
    // 两种方式使用函数模板
    // 1.自动类型推导
    // 2.明确指定类型
    // mySwap(a, b);
    mySwap<int>(a, b);
    std::cout << "a = " << a << ", b = " << b << std::endl;

    double x = 1.1;
    double y = 2.2;

    // 利用函数模板进行交换
    mySwap<double>(x, y);
    std::cout << "x = " << x << ", y = " << y << std::endl;
}
    


int main()
{
    test01();
    return 0;
}